Various mechanisms exist for accessing pre-boot data in existing systems. However, accessing pre-boot data by an operating system (OS) has been problematic. The ability to access pre-boot data is important, especially with the advent of extensible firmware interface (EFI) architecture systems.
The EFI specification defines a new model for the interface between operating systems and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the operating system and its loader. Together, these provide a standard environment for booting an operating system and running pre-boot applications.
The EFI specification is primarily intended for the next generation of IA-32 and Itanium® Architecture-based computers, and is an outgrowth of the “Intel Boot Initiative” (IBI) program that began in 1998 by Intel Corporation. More information about EFI can be found on the World Wide Web, specifically at http://www.intel.com/technology/efi.
A fundamental issue with operating systems and EFI is the ability for OS agents or OS applications to extract information from EFI. When the OS is loading, an OS loader is privy to all information associated with EFI. The OS loader is passed all pertinent information, including system table information, runtime services, boot services, etc., including a configuration table. A problem is that the OS, for example, Microsoft® Windows™, does not provide this information to an external user. So, internal Windows™ applications might have the EFI information available, but any application developer who uses the software development kit or uses a typical driver or application available in the development community does not have the ability to retrieve this information. If a developer wants to pass information from the pre-boot into the OS runtime, they have no means to get the information. If an application advertises information from the firmware through the configuration table, then the OS itself has knowledge of everything upon loading. The OS consumes all information pertinent to its uses and does what it wants with the information. The OS does not export any application program interfaces (APIs) or any means by which to extract the system table (which is actually the EFI's system table), where the table encapsulates the pertinent tables which are constructed within EFI.